Azure App Serviceの可用性ゾーン冗長化が一般提供されたのでためしてみた
いわさです。
以前から、App Service Environmentでは可用性ゾーン冗長がサポートされていましたが、今回非ASE環境でもサポートされるようになりました。
Azureの可用性ゾーンについては以下を参照してください。
App Serviceで利用するにあたっての仕様や制限は以下に記載されています。
気になるところをざっと挙げると
- 設定は新規App Serivceプラン作成時のみ有効化が可能。
- 対応リージョンが限られていて、東日本は対応されているが西日本は対応されていない。
- プレミアムのV2, V3が対応
- 自動でインスタンスサイズが3からになる
- ARMでのみ有効化できる
あたりでしょうか。
本日はその中でも以下について実際に試してみました。
- ポータル上はやはり設定項目がない?
- ARMデプロイ時の既定値の確認
- 西日本でのデプロイ
- App Service新規作成時に併せて作成できるApp Serviceプランはどうなっているか
ポータル上はやはり設定項目がない?
まぁ、無かったです(終わり)
ARMデプロイ時の既定値の確認
ARMテンプレートでApp ServiceプランのプロパティにてzoneRedundant
をtrue
に指定することで、ゾーン冗長化が有効となります。
今回は有効化指定、無効化指定、未設定時のデフォルトを確認しました。
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": {}, "functions": [], "variables": {}, "resources": [ { "type": "Microsoft.Web/serverfarms", "apiVersion": "2018-02-01", "name": "iwasa-appplan-20210904-east-1", "location": "Japan East", "sku": { "name": "P1v3", "tier": "PremiumV3", "size": "P1v3", "family": "Pv3", "capacity": 3 }, "kind": "app", "properties": { "zoneRedundant": true } }, { "type": "Microsoft.Web/serverfarms", "apiVersion": "2018-02-01", "name": "iwasa-appplan-20210904-east-2", "location": "Japan East", "sku": { "name": "P1v3", "tier": "PremiumV3", "size": "P1v3", "family": "Pv3", "capacity": 3 }, "kind": "app", "properties": { "zoneRedundant": false } }, { "type": "Microsoft.Web/serverfarms", "apiVersion": "2018-02-01", "name": "iwasa-appplan-20210904-east-3", "location": "Japan East", "sku": { "name": "P1v3", "tier": "PremiumV3", "size": "P1v3", "family": "Pv3", "capacity": 3 }, "kind": "app", "properties": {} } ], "outputs": {} }
iwasa.takahito@hoge azure-appservice-zoneredundant % az deployment group create --resource-group 20210904 --template-file app-service-plan-east.json
3つとも、東日本でデプロイしました。
ではそれぞれの設定結果を見ていきましょう。
有効化(指定のとおり)
無効化(指定のとおり)
未設定時は無効となる
西日本でのデプロイ
失敗するのか、成功した上で強制的に無効化になるのか気になっていたのですが、デプロイ時にエラーとなりました。
iwasa.takahito@hoge azure-appservice-zoneredundant % az deployment group create --resource-group 20210904 --template-file app-service-plan-west.json {"status":"Failed","error":{"code":"DeploymentFailed","message":"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.","details":[{"code":"BadRequest","message":"{\r\n \"Code\": \"BadRequest\",\r\n \"Message\": \"Requested features are not supported in region. Please try another region.\",\r\n \"Target\": null,\r\n \"Details\": [\r\n {\r\n \"Message\": \"Requested features are not supported in region. Please try another region.\"\r\n },\r\n {\r\n \"Code\": \"BadRequest\"\r\n },\r\n {\r\n \"ErrorEntity\": {\r\n \"ExtendedCode\": \"59911\",\r\n \"MessageTemplate\": \"Requested features are not supported in region. Please try another region.\",\r\n \"Parameters\": [],\r\n \"Code\": \"BadRequest\",\r\n \"Message\": \"Requested features are not supported in region. Please try another region.\"\r\n }\r\n }\r\n ],\r\n \"Innererror\": null\r\n}"}]}}
App Service新規作成時に併せて作成できるApp Serviceプランはどうなっているか
私はよく使うのですが、App Service作成時にSKUとサイズだけ指定してApp Serivceプランを作成するケースがあると思います。
これ、リソースグループやリージョンなどは自動で設定されるんですよね。
では、今回のゾーン冗長設定についてはどうなるでしょうか。
デプロイ前にARMテンプレート確認できるので見てみましょう。
"resources": [ { "apiVersion": "2018-11-01", "name": "[parameters('name')]", "type": "Microsoft.Web/sites", "location": "[parameters('location')]", "tags": {}, "dependsOn": [ "[concat('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]" ], "properties": { "name": "[parameters('name')]", "siteConfig": { "appSettings": [], "metadata": [ { "name": "CURRENT_STACK", "value": "[parameters('currentStack')]" } ], "phpVersion": "[parameters('phpVersion')]", "netFrameworkVersion": "[parameters('netFrameworkVersion')]", "alwaysOn": "[parameters('alwaysOn')]" }, "serverFarmId": "[concat('/subscriptions/', parameters('subscriptionId'),'/resourcegroups/', parameters('serverFarmResourceGroup'), '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]", "clientAffinityEnabled": true } }, { "apiVersion": "2018-11-01", "name": "[parameters('hostingPlanName')]", "type": "Microsoft.Web/serverfarms", "location": "[parameters('location')]", "kind": "", "tags": {}, "dependsOn": [], "properties": { "name": "[parameters('hostingPlanName')]", "workerSize": "[parameters('workerSize')]", "workerSizeId": "[parameters('workerSizeId')]", "numberOfWorkers": "[parameters('numberOfWorkers')]" }, "sku": { "Tier": "[parameters('sku')]", "Name": "[parameters('skuCode')]" } } ]
指定がされていないですね。
となると先程検証したように、無効になりそうな予感がします。
ゾーン冗長は「無効」で作成されましたね。
まとめ
- 基本無効化されているので、明示的な指定が必要だと思っておけば良さそう
- 新規作成時のみ対応
- 対応リージョンの確認が必要